<?php

/**
 * Description of TplRisicogebied
 * 
 * Dit is de klasse die onder een risicoaandachtsgebied hangt. Het Risicogebied
 * is in feite hetzelfde als paragraaf van een hoofdstuk van een V&G plan. Deze beschrijft
 * wat voor risicogebieden er zijn. Dus in warme ruimtes, koude ruimtes, nauwe ruimtes.
 *
 * @author Randy
 * @version 1.0
 * 
 * @category Cofely - Veiligheid & Gezondheids plan sjabloon
 * @uses TextObject, DbRisicogebied, Risico, Versie
 * 
 */

require_once 'defs/Constants.php';
include_once(FILE_CLASS_TPL_RISICO);
include_once(FILE_DB_TPL_RISICOGEBIED);

class TplRisicogebied extends TextObject{
    
    /**
     * Dit is de array met alle risico's bevat. Deze hangt onder een risicoaandachtsgebied en staat boven
     * een risico.
     * @var array $risico_array
     */
    private $risico_array = array();
    /**
     * Dit is de huidige index van de array
     * @var int $current_risico_idx
     */
    private $current_risico_idx = '';
    /**
     * De naam van een risicogebied, bijvoorbeeld Warme ruimtes, Hoge hoogtes, Koude leidingen etc.
     * @var String $naam
     */
    private $naam = '';
    /**
     * De beschrijving/helptekst van een risicogebied, bijvoorbeeld "Hete leidingen kunnen brandwonden veroorzakend"
     * @var String $beschrijving
     */
    protected $beschrijving = '';
    /**
     * De contructor functie die wordt aangeroepen zodra er een instantie van deze
     * klasse wordt gemaakt
     * @param String $tpl_risicogebied 
     */
    public function __construct($tpl_risicogebied = ''){
        
        if(!empty($tpl_risicogebied)){
            $this->setBeschrijving($tpl_risicogebied);
        }
    }
    /**
     * de Setter van de risicogebied naam
     * @param String $naam 
     */    
    public function setNaam( $naam ){
        
        $this->naam = $naam;
    }
    /**
     * de Setter van de risicogebied beschrijving / helptekst
     * @param type $beschrijving 
     */    
    public function setBeschrijving($beschrijving){
        
        $this->beschrijving = $beschrijving;
    }    
    /**
     * de Getter van de risicogebied naam, returned de String $naam
     * @return String $naam
     */
    public function getNaam(){
        
       return $this->naam; 
        
    }
    /**
     * De Getter van de risicogebied beschrijving, returned de String $beschrijving
     * @return String $beschrijving
     */    
    public function getBeschrijving(){
        
        return $this->beschrijving;
        
    }
    /**
     * Deze check functie kijkt of er een risico is aangemaakt, zo niet, krijg je een error
     * @param String $risiconaam
     * @return boolean 
     */
    public function check($risiconaam){
        
        if(empty($risiconaam)){
            echo TPL_RISICOGEBIED_ERROR_LEGERISICO;
            return false;
        }
        
    }
    /**
     * Deze functie slaat het sjabloon_versie_id, risicoaandachtsgebied naam en de beschrijving op
     * in de database. Daarna worden alle risico's die hieronder vallen opgeslagen.
     * 
     * @param int $sjabloon_versie_id
     * @param String $risicogebiednaam
     * @param String $risicogebied_beschrijving
     * @param int  $risicoaandachtsgebied_id
     */    
    public function save( $sjabloon_versie_id, $risicogebiednaam, $risicogebied_beschrijving, $risicoaandachtsgebied_id ){
        //Maak een object van het risicogebied
        $db_risicogebied = new DbRisicogebied();
        //Sla het risicogebied op
        $db_risicogebied->save( $sjabloon_versie_id, $risicogebiednaam, $risicogebied_beschrijving, $risicoaandachtsgebied_id );
        //Haal het id op uit de database en stop deze in $risicogebied_id
        $risicogebied_id = $db_risicogebied->getRisico_gebied_id();
        
        // Sla alle risico's van een risicogebied op in de database
        foreach( $this->risico_array as $idx => $obj){

            $this->risico_array[$idx]->save( $sjabloon_versie_id, $obj->getNaam(), $obj->getBeschrijving(), $risicogebied_id );
            
        }        
        
    }
   
    public function update(){
        
        
        
    }
    
    public function addRisico( $risiconaam, $risicobeschrijving ){
        //Kijk of er een risico is gemaakt
        $this->check($risiconaam);
        // maak een nieuw risico object aan voor elke entry in de array
        $this->risico_array[] = new TplRisico();
        // Bepaal de index van de array
        $this->current_risico_idx = count($this->risico_array)-1;
        //Set de informatie van een risico
        $this->risico_array[$this->current_risico_idx]->setNaam($risiconaam );
        $this->risico_array[$this->current_risico_idx]->setBeschrijving($risicobeschrijving );  
    }
    /**
     * Deze functie voegt een maatregel toe aan het risico_array
     * @param String $maatregelnaam
     * @param String $maatregelbeschrijving 
     */
    public function addMaatregel( $maatregelnaam, $maatregelbeschrijving ){
        //Voeg een maatregel toe aan de risico_array
        $this->risico_array[$this->current_risico_idx]->addMaatregel($maatregelnaam, $maatregelbeschrijving);

    }
}

?>